home *** CD-ROM | disk | FTP | other *** search
/ Aminet 25 / Aminet 25 (1998)(GTI - Schatztruhe)[!][Jun 1998].iso / Aminet / misc / emu / atari800_tr.lzh / atari.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-02-17  |  7.6 KB  |  302 lines

  1. #ifndef __ATARI__
  2. #define    __ATARI__
  3.  
  4. /*
  5.     =================================
  6.     Define Data Types on Local System
  7.     =================================
  8. */
  9.  
  10. #ifdef VMS
  11. #define SBYTE char
  12. #define SWORD short int
  13. #define SLONG long int
  14. #else
  15. #define    SBYTE signed char
  16. #define    SWORD signed short int
  17. #define    SLONG signed long int
  18. #endif
  19.  
  20. #define    UBYTE unsigned char
  21. #define    UWORD unsigned short int
  22. #define    ULONG unsigned long int
  23.  
  24. typedef enum
  25. {
  26.   PAL,
  27.   NTSC
  28. } TVmode;
  29.  
  30. typedef enum
  31. {
  32.   Atari,
  33.   AtariXL,
  34.   AtariXE,
  35.   Atari5200
  36. } Machine;
  37.  
  38. extern TVmode tv_mode;
  39. extern Machine machine;
  40. extern int verbose;
  41.  
  42. #define FILLIN_OFFSET  32
  43. #define ATARI_WIDTH  (384)
  44. #define PLAYER_OFFSET 64
  45. #define ATARI_MODULO (ATARI_WIDTH+FILLIN_OFFSET+PLAYER_OFFSET)
  46. #define ATARI_EXTRA (FILLIN_OFFSET+PLAYER_OFFSET)
  47. #define ATARI_HEIGHT (192 + 24 + 24)
  48. #define ATARI_TITLE  "Atari 800 Emulator, Version 0.9.1"
  49.  
  50. #define NO_CART 0
  51. #define NORMAL8_CART 1
  52. #define NORMAL16_CART 2
  53. #define AGS32_CART 3
  54. #define OSS_SUPERCART 4
  55. #define DB_SUPERCART 5
  56. #define CARTRIDGE 6
  57. #define AGS16_CART 7
  58.  
  59. #ifndef TRUE
  60. #define TRUE 1
  61. #endif
  62.  
  63. #ifndef FALSE
  64. #define FALSE 0
  65. #endif
  66.  
  67. #ifndef NULL
  68. #define NULL 0L
  69. #endif
  70.  
  71. /*
  72.     =================
  73.     Joystick Position
  74.     =================
  75. */
  76.  
  77. #define    STICK_LL    0x09
  78. #define    STICK_BACK    0x0d
  79. #define    STICK_LR    0x05
  80. #define    STICK_LEFT    0x0b
  81. #define    STICK_CENTRE    0x0f
  82. #define    STICK_RIGHT    0x07
  83. #define    STICK_UL    0x0a
  84. #define    STICK_FORWARD    0x0e
  85. #define    STICK_UR    0x06
  86.  
  87. /*
  88.    ===========================
  89.    non-standard keyboard codes
  90.    ===========================
  91. */
  92.  
  93. #define AKEY_NONE -1
  94. #define AKEY_WARMSTART -2
  95. #define AKEY_COLDSTART -3
  96. #define AKEY_EXIT -4
  97. #define AKEY_BREAK -5
  98. #define AKEY_PIL -6
  99. #define AKEY_UI -7
  100.  
  101. #define AKEY_SHFT 0x40
  102. #define AKEY_CTRL 0x80
  103. #define AKEY_SHFTCTRL 0xc0
  104.  
  105. /*
  106.    ===============================
  107.    keyboard codes for numbers 0..9
  108.    ===============================
  109. */
  110.  
  111. #define AKEY_0 0x32
  112. #define AKEY_1 0x1f
  113. #define AKEY_2 0x1e
  114. #define AKEY_3 0x1a
  115. #define AKEY_4 0x18
  116. #define AKEY_5 0x1d
  117. #define AKEY_6 0x1b
  118. #define AKEY_7 0x33
  119. #define AKEY_8 0x35
  120. #define AKEY_9 0x30
  121.  
  122. #define AKEY_CTRL_0 (AKEY_CTRL | AKEY_0)
  123. #define AKEY_CTRL_1 (AKEY_CTRL | AKEY_1)
  124. #define AKEY_CTRL_2 (AKEY_CTRL | AKEY_2)
  125. #define AKEY_CTRL_3 (AKEY_CTRL | AKEY_3)
  126. #define AKEY_CTRL_4 (AKEY_CTRL | AKEY_4)
  127. #define AKEY_CTRL_5 (AKEY_CTRL | AKEY_5)
  128. #define AKEY_CTRL_6 (AKEY_CTRL | AKEY_6)
  129. #define AKEY_CTRL_7 (AKEY_CTRL | AKEY_7)
  130. #define AKEY_CTRL_8 (AKEY_CTRL | AKEY_8)
  131. #define AKEY_CTRL_9 (AKEY_CTRL | AKEY_9)
  132.  
  133. #define AKEY_a 0x3f
  134. #define AKEY_b 0x15
  135. #define AKEY_c 0x12
  136. #define AKEY_d 0x3a
  137. #define AKEY_e 0x2a
  138. #define AKEY_f 0x38
  139. #define AKEY_g 0x3d
  140. #define AKEY_h 0x39
  141. #define AKEY_i 0x0d
  142. #define AKEY_j 0x01
  143. #define AKEY_k 0x05
  144. #define AKEY_l 0x00
  145. #define AKEY_m 0x25
  146. #define AKEY_n 0x23
  147. #define AKEY_o 0x08
  148. #define AKEY_p 0x0a
  149. #define AKEY_q 0x2f
  150. #define AKEY_r 0x28
  151. #define AKEY_s 0x3e
  152. #define AKEY_t 0x2d
  153. #define AKEY_u 0x0b
  154. #define AKEY_v 0x10
  155. #define AKEY_w 0x2e
  156. #define AKEY_x 0x16
  157. #define AKEY_y 0x2b
  158. #define AKEY_z 0x17
  159.  
  160. #define AKEY_A (AKEY_SHFT | AKEY_a)
  161. #define AKEY_B (AKEY_SHFT | AKEY_b)
  162. #define AKEY_C (AKEY_SHFT | AKEY_c)
  163. #define AKEY_D (AKEY_SHFT | AKEY_d)
  164. #define AKEY_E (AKEY_SHFT | AKEY_e)
  165. #define AKEY_F (AKEY_SHFT | AKEY_f)
  166. #define AKEY_G (AKEY_SHFT | AKEY_g)
  167. #define AKEY_H (AKEY_SHFT | AKEY_h)
  168. #define AKEY_I (AKEY_SHFT | AKEY_i)
  169. #define AKEY_J (AKEY_SHFT | AKEY_j)
  170. #define AKEY_K (AKEY_SHFT | AKEY_k)
  171. #define AKEY_L (AKEY_SHFT | AKEY_l)
  172. #define AKEY_M (AKEY_SHFT | AKEY_m)
  173. #define AKEY_N (AKEY_SHFT | AKEY_n)
  174. #define AKEY_O (AKEY_SHFT | AKEY_o)
  175. #define AKEY_P (AKEY_SHFT | AKEY_p)
  176. #define AKEY_Q (AKEY_SHFT | AKEY_q)
  177. #define AKEY_R (AKEY_SHFT | AKEY_r)
  178. #define AKEY_S (AKEY_SHFT | AKEY_s)
  179. #define AKEY_T (AKEY_SHFT | AKEY_t)
  180. #define AKEY_U (AKEY_SHFT | AKEY_u)
  181. #define AKEY_V (AKEY_SHFT | AKEY_v)
  182. #define AKEY_W (AKEY_SHFT | AKEY_w)
  183. #define AKEY_X (AKEY_SHFT | AKEY_x)
  184. #define AKEY_Y (AKEY_SHFT | AKEY_y)
  185. #define AKEY_Z (AKEY_SHFT | AKEY_z)
  186.  
  187. #define AKEY_CTRL_a (AKEY_CTRL | AKEY_a)
  188. #define AKEY_CTRL_b (AKEY_CTRL | AKEY_b)
  189. #define AKEY_CTRL_c (AKEY_CTRL | AKEY_c)
  190. #define AKEY_CTRL_d (AKEY_CTRL | AKEY_d)
  191. #define AKEY_CTRL_e (AKEY_CTRL | AKEY_e)
  192. #define AKEY_CTRL_f (AKEY_CTRL | AKEY_f)
  193. #define AKEY_CTRL_g (AKEY_CTRL | AKEY_g)
  194. #define AKEY_CTRL_h (AKEY_CTRL | AKEY_h)
  195. #define AKEY_CTRL_i (AKEY_CTRL | AKEY_i)
  196. #define AKEY_CTRL_j (AKEY_CTRL | AKEY_j)
  197. #define AKEY_CTRL_k (AKEY_CTRL | AKEY_k)
  198. #define AKEY_CTRL_l (AKEY_CTRL | AKEY_l)
  199. #define AKEY_CTRL_m (AKEY_CTRL | AKEY_m)
  200. #define AKEY_CTRL_n (AKEY_CTRL | AKEY_n)
  201. #define AKEY_CTRL_o (AKEY_CTRL | AKEY_o)
  202. #define AKEY_CTRL_p (AKEY_CTRL | AKEY_p)
  203. #define AKEY_CTRL_q (AKEY_CTRL | AKEY_q)
  204. #define AKEY_CTRL_r (AKEY_CTRL | AKEY_r)
  205. #define AKEY_CTRL_s (AKEY_CTRL | AKEY_s)
  206. #define AKEY_CTRL_t (AKEY_CTRL | AKEY_t)
  207. #define AKEY_CTRL_u (AKEY_CTRL | AKEY_u)
  208. #define AKEY_CTRL_v (AKEY_CTRL | AKEY_v)
  209. #define AKEY_CTRL_w (AKEY_CTRL | AKEY_w)
  210. #define AKEY_CTRL_x (AKEY_CTRL | AKEY_x)
  211. #define AKEY_CTRL_y (AKEY_CTRL | AKEY_y)
  212. #define AKEY_CTRL_z (AKEY_CTRL | AKEY_z)
  213.  
  214. #define AKEY_CTRL_A (AKEY_CTRL | AKEY_A)
  215. #define AKEY_CTRL_B (AKEY_CTRL | AKEY_B)
  216. #define AKEY_CTRL_C (AKEY_CTRL | AKEY_C)
  217. #define AKEY_CTRL_D (AKEY_CTRL | AKEY_D)
  218. #define AKEY_CTRL_E (AKEY_CTRL | AKEY_E)
  219. #define AKEY_CTRL_F (AKEY_CTRL | AKEY_F)
  220. #define AKEY_CTRL_G (AKEY_CTRL | AKEY_G)
  221. #define AKEY_CTRL_H (AKEY_CTRL | AKEY_H)
  222. #define AKEY_CTRL_I (AKEY_CTRL | AKEY_I)
  223. #define AKEY_CTRL_J (AKEY_CTRL | AKEY_J)
  224. #define AKEY_CTRL_K (AKEY_CTRL | AKEY_K)
  225. #define AKEY_CTRL_L (AKEY_CTRL | AKEY_L)
  226. #define AKEY_CTRL_M (AKEY_CTRL | AKEY_M)
  227. #define AKEY_CTRL_N (AKEY_CTRL | AKEY_N)
  228. #define AKEY_CTRL_O (AKEY_CTRL | AKEY_O)
  229. #define AKEY_CTRL_P (AKEY_CTRL | AKEY_P)
  230. #define AKEY_CTRL_Q (AKEY_CTRL | AKEY_Q)
  231. #define AKEY_CTRL_R (AKEY_CTRL | AKEY_R)
  232. #define AKEY_CTRL_S (AKEY_CTRL | AKEY_S)
  233. #define AKEY_CTRL_T (AKEY_CTRL | AKEY_T)
  234. #define AKEY_CTRL_U (AKEY_CTRL | AKEY_U)
  235. #define AKEY_CTRL_V (AKEY_CTRL | AKEY_V)
  236. #define AKEY_CTRL_W (AKEY_CTRL | AKEY_W)
  237. #define AKEY_CTRL_X (AKEY_CTRL | AKEY_X)
  238. #define AKEY_CTRL_Y (AKEY_CTRL | AKEY_Y)
  239. #define AKEY_CTRL_Z (AKEY_CTRL | AKEY_Z)
  240.  
  241. #define AKEY_HELP 0x11
  242. #define AKEY_DOWN 0x8f
  243. #define AKEY_LEFT 0x86
  244. #define AKEY_RIGHT 0x87
  245. #define AKEY_UP 0x8e
  246. #define AKEY_BACKSPACE 0x34
  247. #define AKEY_DELETE_CHAR 0xb4
  248. #define AKEY_DELETE_LINE 0x74
  249. #define AKEY_INSERT_CHAR 0xb7
  250. #define AKEY_INSERT_LINE 0x77
  251. #define AKEY_ESCAPE 0x1c
  252. #define AKEY_ATARI 0x27
  253. #define AKEY_CAPSLOCK 0x7c
  254. #define AKEY_CAPSTOGGLE 0x3c
  255. #define AKEY_TAB 0x2c
  256. #define AKEY_SETTAB 0x6c
  257. #define AKEY_CLRTAB 0xac
  258. #define AKEY_RETURN 0x0c
  259. #define AKEY_SPACE 0x21
  260. #define AKEY_EXCLAMATION 0x5f
  261. #define AKEY_DBLQUOTE 0x5e
  262. #define AKEY_HASH 0x5a
  263. #define AKEY_DOLLAR 0x58
  264. #define AKEY_PERCENT 0x5d
  265. #define AKEY_AMPERSAND 0x5b
  266. #define AKEY_QUOTE 0x73
  267. #define AKEY_AT 0x75
  268. #define AKEY_PARENLEFT 0x70
  269. #define AKEY_PARENRIGHT 0x72
  270. #define AKEY_LESS 0x36
  271. #define AKEY_GREATER 0x37
  272. #define AKEY_EQUAL 0x0f
  273. #define AKEY_QUESTION 0x66
  274. #define AKEY_MINUS 0x0e
  275. #define AKEY_PLUS 0x06
  276. #define AKEY_ASTERISK 0x07
  277. #define AKEY_SLASH 0x26
  278. #define AKEY_COLON 0x42
  279. #define AKEY_SEMICOLON 0x02
  280. #define AKEY_COMMA 0x20
  281. #define AKEY_FULLSTOP 0x22
  282. #define AKEY_UNDERSCORE 0x4e
  283. #define AKEY_BRACKETLEFT 0x60
  284. #define AKEY_BRACKETRIGHT 0x62
  285. #define AKEY_CIRCUMFLEX 0x47
  286. #define AKEY_BACKSLASH 0x46
  287. #define AKEY_BAR 0x4f
  288.  
  289. UBYTE Atari_Keyboard_State(void);
  290. int Remove_ROM (void);
  291. void Coldstart (void);
  292. void Warmstart (void);
  293. int Initialise_AtariOSA (int *argc,char **argv);
  294. int Initialise_AtariOSB (int *argc,char **argv);
  295. int Initialise_AtariXL (int *argc,char **argv);
  296. int Initialise_AtariXE (int *argc,char **argv);
  297. int Initialise_Atari5200 (int *argc,char **argv);
  298. int Atari800_Exit (int run_monitor, int exitcode);
  299. int Insert_Cartridge (char *filename);
  300. void Atari_Set_LED(int on);
  301. #endif
  302.